WRAP_CLASS("itk::ThresholdSegmentationLevelSetImageFilter")

  SET(MANAGED_TYPE_TEMPLATE ${MANAGED_ITK_SOURCE_COMMON_PATH}/itkManagedSegmentationLevelSetImageFilter_TYPE.cxx.in)
  SET(MANAGED_WRAPPER_TEMPLATE ${MANAGED_ITK_SOURCE_COMMON_PATH}/itkManagedSegmentationLevelSetImageFilter_WRAPPER.cxx.in)

  FILTER_DIMS(dims 2+)
  FOREACH(d ${dims})
    FOREACH(t ${WRAP_ITK_REAL})
      WRAP_TEMPLATE("${ITKM_I${t}${d}}${ITKM_I${t}${d}}${ITKM_${t}}" "${ITKT_I${t}${d}},${ITKT_I${t}${d}},${ITKT_${t}}")
    ENDFOREACH(t)
  ENDFOREACH(d)
  
  BEGIN_MANAGED_PROPERTY("UpperThreshold" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the threshold values that will be used to calculate the speed function.")
    SET(MANAGED_PROPERTY_TYPE      "itkPixel^")
    SET(MANAGED_PROPERTY_GET_BODY  "return itk::ManagedTypes::ToManagedPixel<NativeType::ValueType>( m_PointerToNative->GetUpperThreshold() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetUpperThreshold( itk::ManagedTypes::ToNativePixel<NativeType::ValueType>( value ) );")
  END_MANAGED_PROPERTY()

  BEGIN_MANAGED_PROPERTY("LowerThreshold" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the threshold values that will be used to calculate the speed function.")
    SET(MANAGED_PROPERTY_TYPE      "itkPixel^")
    SET(MANAGED_PROPERTY_GET_BODY  "return itk::ManagedTypes::ToManagedPixel<NativeType::ValueType>( m_PointerToNative->GetLowerThreshold() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetLowerThreshold( itk::ManagedTypes::ToNativePixel<NativeType::ValueType>( value ) );")
  END_MANAGED_PROPERTY()
  
  BEGIN_MANAGED_PROPERTY("EdgeWeight" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the weight applied to the edge (Laplacian) attractor in the speed term function. Zero will turn this term off.")
    SET(MANAGED_PROPERTY_TYPE      "itkPixel^")
    SET(MANAGED_PROPERTY_GET_BODY  "return itk::ManagedTypes::ToManagedPixel<NativeType::ValueType>( m_PointerToNative->GetEdgeWeight() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetEdgeWeight( itk::ManagedTypes::ToNativePixel<NativeType::ValueType>( value ) );")
  END_MANAGED_PROPERTY()
  
  BEGIN_MANAGED_PROPERTY("SmoothingIterations" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Anisotropic diffusion is applied to the FeatureImage before calculating the Laplacian (edge) term. Get/set the number of diffusion iterations.")
    SET(MANAGED_PROPERTY_TYPE      "int")
    SET(MANAGED_PROPERTY_GET_BODY  "return m_PointerToNative->GetSmoothingIterations();")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetSmoothingIterations( value );")
  END_MANAGED_PROPERTY()
  
  BEGIN_MANAGED_PROPERTY("SmoothingTimeStep" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Anisotropic diffusion is applied to the FeatureImage before calculating the Laplacian (edge) term. Get/set the diffusion time step.")
    SET(MANAGED_PROPERTY_TYPE      "itkPixel^")
    SET(MANAGED_PROPERTY_GET_BODY  "return itk::ManagedTypes::ToManagedPixel<NativeType::ValueType>( m_PointerToNative->GetSmoothingTimeStep() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetSmoothingTimeStep( itk::ManagedTypes::ToNativePixel<NativeType::ValueType>( value ) );")
  END_MANAGED_PROPERTY()
  
  BEGIN_MANAGED_PROPERTY("SmoothingConductance" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Anisotropic diffusion is applied to the FeatureImage before calculating the Laplacian (edge) term. Get/set the diffusion conductance.")
    SET(MANAGED_PROPERTY_TYPE      "itkPixel^")
    SET(MANAGED_PROPERTY_GET_BODY  "return itk::ManagedTypes::ToManagedPixel<NativeType::ValueType>( m_PointerToNative->GetSmoothingConductance() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetSmoothingConductance( itk::ManagedTypes::ToNativePixel<NativeType::ValueType>( value ) );")
  END_MANAGED_PROPERTY()

END_WRAP_CLASS()
